package lambad;

import java.util.Comparator;

/*
 * lambda表达式
 * JDK8之后退出的一个新特性
 * lambda指在可以 面向函数式编程
 *
 * 更精简的语法创建匿名内部类，在前端开发中通常称它为 "箭头函数"
 *  语法:
 *   (参数列表)->{
 *       方法体
 *   }
 *
 *使用要求:当接口中只有一个抽象方法时，可可以使用lambda表达形势
 * */
public class LambdaDemo {
    public static void main(String[] args) {
        //匿名内部类的正常使用
        Comparator<String> c = new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return o1.length() - o2.length();
            }
        };

        //如果以lambda方法来写的话可以写成
        Comparator<String> c1 = (String o1, String o2) -> {
            return o1.length() - o2.length();
        };

        //上面两个代码的含义是相同的

        //因为泛型的约束甚至参数类型都可以省略
        Comparator<String> c2 = (o1, o2) -> {
            return o1.length() - o2.length();
        };

        //当你的方法体重只有一句的时候 方法体都可以不写 若方法体中只有一句return 甚至return关键字都可以不写
        Comparator<String> c3 = (o1, o2) -> o1.length() - o2.length();

    }
}
